package com.qjc.controller;

import com.qjc.vo.ResponseBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

/**
 * @Description:
 * @Author: qjc
 * @Date: 2020/4/20
 */
@Api(value = "controller操作", tags = {"controller操作"})
@RequestMapping("/test")
@RestController
@CrossOrigin(origins = "*", methods = {RequestMethod.GET, RequestMethod.POST, RequestMethod.DELETE, RequestMethod.PUT})
@Slf4j
public class TestController {

    @ApiOperation(value = "查询数据", notes = "查询数据")
    @RequestMapping(value = "/find/dataList", method = RequestMethod.POST)
    public ResponseBean findInterfaceList(@RequestParam String userName) {
        log.info("查询数据成功！！！！");
        return new ResponseBean(200, "查询成功", userName);
    }

/**
 * 1.项目启动->@Configuration的注解按代码顺序执行（注册过滤器1,2->初始化过滤器1,2->注册拦截器）
 * 2.请求controller。使用swagger请求方式 http://localhost:8080/swagger-ui.html#!/
 *     （1）执行 过滤器1 doFilter方法
 *      （2）执行过滤器1 filterChain.doFilter(servletRequest, servletResponse);跳转，未完成
 *      （3）执行过滤器2 doFilter方法
 *      （4）执行过滤器2 filterChain.doFilter(servletRequest, servletResponse);跳转，未完成
 *
 *      （5）执行拦截器1 preHandle方法 完成
 *      （6）执行拦截器2 preHandle方法 完成
 *
 *       （7）执行 @Aspect @Around("pointcut()")->proceedingJoinPoint.proceed()->  @Before("pointcut()")->调用controller->@After("pointcut()")->@AfterReturning
 *
 *       (8)拦截器2 postHandle方法执行
 *       (9)拦截器1 postHandle方法执行
 *       (10)拦截器2 afterCompletion方法执行
 *  *    (11)拦截器1 afterCompletion方法执行
 *        （12）执行过滤器2 filterChain.doFilter 完成
 *  *      （13）执行过滤器1 filterChain.doFilter完成
 *  3.项目停止。过滤器1销毁->过滤器2销毁
 *
 */
}
